/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package utils;

import java.io.File;
import java.util.Set;
import javax.swing.filechooser.FileFilter;

/**
 * Classe FilterFileChooser. Permet d'ajouter un filtre lorsque
 * le selectionneur de fichier est ouvert depuis la fenêtre principale
 * @author Florian MININ & Khémon BEH
 */
public class FilterFileChooser extends FileFilter {
//Description et extension acceptée par le filtre

    private String description;
    private Set<String> extensions;

    /**
     * Constructeur. Instancie le filtre à
     * partir de la description et de l'extension acceptée
     */
    public FilterFileChooser(String description, Set<String> extension) {
        if (description == null || extension == null) {
            throw new NullPointerException("La description (ou extension)"
                    +" ne peut être null.");
        }
        this.description = description;
        this.extensions = extension;
    }

    /**
     * Méthode qui permet de définir si le fichier est "acceptable"
     * selon son extension.
     * @param file le Fichier
     * @return boolean
     */
    public boolean accept(File file) {
        if (file.isDirectory()) {
            return true;
        }
        String nomFichier = file.getName().toLowerCase();
        //Si le fichier à la bonne extension il est acceptable (true).
        //False sinon
        boolean contientExtension = false;
        for(String extension: extensions){
            if(nomFichier.endsWith(extension)){
                contientExtension = true;
            }
        }
        return contientExtension;
    }

    /**
     * Getteur de la variable description
     * @return <tt>String</tt> la chaine de la description du fichier
     */
    public String getDescription() {
        return description;
    }
}
